package basics

import net.sourceforge.pinyin4j.PinyinHelper
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType

/**
 * String
 * 需要存储多个数据 -> 集合
 * 多个有序可重复的数据  -> List
 * 多个无序不重复的数据  -> Set
 * 一对一或者一对多的数据 -> Map
 *
 * 顶层父类：Iterator 遍历器 枚举器
 * 当需要遍历集合的时候可以使用Iterator来遍历
 * val nums = arrayListOf(1,2,3,4,5)
 *     val iterator = nums.iterator()
 *     while (iterator.hasNext()){
 *         println(iterator.next())
 *         iterator.remove()
 *     }
 *
 * Collection集合
 *     List
 *     Set
 */
fun main() {

    //nums.size
    //nums.isEmpty()
//    if (nums.contains(1)){
//        println("存在")
//    }else{
//        println("不存在")
//    }
    //获取遍历器
    //nums.iterator()
    //nums.toArray()
    //nums.add(8)
//    val result = nums.remove(2)
//    println(result)

//    if(nums.containsAll(child)){
//        println("包含")
//    }else{
//        println("不包含")
//    }

//    nums.removeIf{
//        it % 2 == 0
//    }

    //nums.clear()

    //val items = Collection(1,2,3)
    //val items2 = List(2,3,)
    //val items3:ArrayList<Int> = arrayListOf(1,2,4)
    //val items4:Collection<Int> = arrayListOf(1,2,3)


//    val nums = arrayListOf(KPerson(20),KPerson(10),KPerson(80),KPerson(1))
//    println(nums.subList(0,1))

    //数组 1  2  3  4  5 找元素 位置
    //链表 Linked 增加和删除比较方便

    //kotlin中map是不可变的
    //一旦创建不能增加或者删除
//    val namesMap:Map<String,String> = mapOf(
//        Pair("name","jack"),
//        Pair("age","20")
//    )

    //可变map
    //MutableMap
//    val map2 = mutableMapOf<String,String>()
//    map2["name"] = "jack" //如果没有就添加键值对
//    map2["age"] = "20"
//    map2["name"] = "rose" //如果有就更新
//    map2.remove("age");
//    map2.clear()


    //不可变
//    val set1:Set<Int> = setOf(1,2,3,4)
//    val set2:MutableSet<Int> = mutableSetOf()
//    set2.add(1)
//    set2.add(2)
//    set2.remove(1)
//    set2.clear()

    //PengXiaoDong
    //pengxiaodong
    //PENGXIAODONG
    val format = HanyuPinyinOutputFormat()
    format.caseType = HanyuPinyinCaseType.LOWERCASE
    format.toneType = HanyuPinyinToneType.WITHOUT_TONE
    val py = PinyinHelper.toHanyuPinyinStringArray('孝',format)
    println(py[0])
}

class KPerson(var age:Int = 10): Comparable<KPerson>{
    override fun compareTo(other: KPerson): Int {
        return other.age - this.age
    }

    override fun toString(): String {
        return "$age"
    }
}

